package com.xoms.admin.persist.dao;

import com.alibaba.fastjson.JSONArray;
import com.xoms.admin.controller.res.bean.*;
import com.xoms.admin.model.*;

import java.util.List;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 * User: tzz(Tian)
 * Date: 2018/4/28 12:37
 */
public interface RoomDao {
    /**
     * @Description:   selectDimensions 查询维度列表信息
     * @author:        tzz
     * @Param:         []
     * @Return:        java.util.List<com.xoms.admin.persist.dao.RoomDimension>
     * @Date:          2018/4/28 12:39
     */
    List<RoomDimensionBean> selectDimensions();

    /**
     * 获取详细列表
     * @param dimensionId 维度id
     * @return
     */
    List<RoomDimensionDetailBean> getDimensionDetailList(String dimensionId);

    /**
     * 获取所有详情信息
     * @return
     */
    List<RRoomDimensionDetailBean> getDimensionAllDetailList();

    /**
     * 获取维度组合下拉列表信息
     * @param dimensionId 维度id
     * @param did 维度详细id
     * @param pids 数组形式传入
     * @return
     */
    List<RRoomDimensionScaleBean> getDimensionScaleDownList(String dimensionId, String did, String[] pids);

    /**
     * 获取维度组合列表信息
     * @return
     */
    List<RRoomDimensionScaleListBean> getDimensionScaleList();

    /**
     * 查询维度详情
     * @param id
     * @return
     */
    RoomDimensionDetailBean selectDimensionDetailById(String id);

    /**
     * 根据名称精确搜索对象
     * @param dimensionId 维度id
     * @param name 名称
     * @return
     */
    RoomDimensionDetailBean selectDimensionDetailByName(String dimensionId, String name);
    /**
     * 插入维度详情
     * @param data
     * @return
     */
    int insertDimensionDetail(RoomDimensionDetailBean data);

    /**
     * 更新维度详情
     * @param data
     * @return
     */
    int updateDimensionDetail(RoomDimensionDetailBean data);

    /**
     * 删除维度详情
     * @param id
     * @return
     */
    int delDimensionDetail(String id);

    /**
     * 查询维度组合
     * @param id
     * @return
     */
    RoomDimensionScaleBean selectDimensionScaleById(String id);

    /**
     * 查询经维度组合
     * @param dimeRalation
     * @return
     */
    RoomDimensionScaleBean selectDimensionScaleByDims(String dimeRalation);

    /**
     * 插入维度组合
     * @param data
     * @return
     */
    int insertDimensionScale(RoomDimensionScaleBean data);

    /**
     * 更新维度组合
     * @param data
     * @return
     */
    int updateDimensionScale(RoomDimensionScaleBean data);

    /**
     * 删除维度组合
     * @param id
     * @return
     */
    int delDimensionScale(String id);

    /**
     * 获取影厅列表
     * @return
     */
    List<RRoomBean> getRoomList(String id, String no, String name, String scale, int page, int pagesize);

    /**
     * 查询影厅
     * @param id
     * @return
     */
    RoomBean selectRoomById(String id);

    /**
     * 新建影厅
     * @param data
     * @param scales
     * @return
     */
    int insertRoom(RoomBean data, String[] scales);

    /**
     * 修改影厅
     * @param data
     * @return
     */
    int updateRoom(RoomBean data, String[] scales);

    /**
     * 删除影厅
     * @param id
     * @return
     */
    int delRoom(String id);

    /**
     * 获取影厅的维度组合
     * @param roomId
     * @return
     */
    String selectDimeRelationByRoomId(String roomId);

    /**
     * 获取时间段列表
     * @return
     */
    List<RTimeBucketBean> getTimeBucketList();

    /**
     * 批量插入时间段
     * @param list
     * @return
     */
    int addTimeBucket(TimeBucketBean data, List<Map<String, String>> list);

    /**
     * 根据名字查询对象
     * @param name
     * @return
     */
    RTimeBucketBean selectTimeBucketByName(String name);

    /**
     * 查询当前时间段关联的价格数量
     * @param name
     * @return
     */
    int countOfTimeBucketRelation(String name);

    /**
     * 删除时间段，先判断有没有关联
     * @param name
     * @return
     */
    int delTimeBucket(String name);

    /**
     * 获取指定名字的所有时间段
     * @param name
     * @return
     */
    List<RTimeBucketBean> getTimeBucket(String name);

    /**
     * 添加基本价格
     * @param list
     * @param scales
     * @return
     */
    int addDimePrice(List<RoomDimePriceBean> list, String scales);

    /**
     * 单独设置影厅价格
     * @param list
     * @return
     */

    int addRoomPrice(List<RoomPriceBean> list);

    /**
     * 匹配影厅组合添加影厅价格
     * @param roomId
     * @param dimeId
     * @return
     */
    int addRoomPriceByDime(String roomId, String dimeId);


    /**
     * 获取影厅的价格设置记录列表
     * @param id
     * @param page
     * @param pagesize
     * @return
     */
    List<RRoomPriceBean> getRoomPriceList(String id, int page, int pagesize);

    /**
     * 获取影厅月价格
     * @param params
     * @return
     */
    List<RRoomMonthPriceBean> getRoomMonthPrice(Map<String, Object> params);

    /**
     * 获取指定影厅价格列表
     * @param params
     * @return
     */
    List<RRoomPriceBean> getRoomPriceDetail(Map<String, Object> params);

    /**
     * 获取影厅当前有效价格
     * @param id
     * @return
     */
    List<RRoomPriceBean> getRoomCurrPrice(String id);

    /**
     * 获取价格列表
     * @param dateB
     * @param dateE
     * @param priceType
     * @param scale
     * @param page
     * @param pageSize
     * @return
     */
    List<RDimePriceBean> getDimePriceList(String dateB, String dateE, Integer priceType, String scale, Integer page, Integer pageSize);

    /**
     * 价格详情
     * @param params
     * @return
     */
    List<RDimePriceBean> getDimePriceDetail(Map<String, Object> params);
}
